7520cd95b083c5eb5afd6df3751224195f858449,src/com/opencms/workplace/CmsAdminModuleCreate.java,CmsAdminModuleCreate,getContent,#CmsObject#String#String#Hashtable#String#,88

Before Change


                    tryToCreateFolder(cms, modulePath, "language");
                    tryToCreateFolder(cms, modulePath + "language/", I_CmsWpConstants.C_DEFAULT_LANGUAGE);
                    // tryToCreateFolder(cms, modulePath + "language/", "de");
                    tryToCreateFolder(cms, modulePath, "doc");
                    reg.setModuleDocumentPath(packetname, modulePath + "doc/index.html");
                    if("checked".equals(view)) {
                        reg.setModuleView(packetname, packetname.replace('.', '_') + ".view", modulePath + "view/index.html");

After Change


     * @param parameters Hashtable with all template class parameters.
     * @param templateSelector template section that should be processed.
     */
    public byte[] getContent(CmsObject cms, String templateFile, String elementName, Hashtable parameters, String templateSelector) throws CmsException {
        if(I_CmsLogChannels.C_PREPROCESSOR_IS_LOGGING && A_OpenCms.isLogging() && C_DEBUG) {
            A_OpenCms.log(C_OPENCMS_DEBUG, this.getClassName() + "getting content of element " + ((elementName == null) ? "<root>" : elementName));
            A_OpenCms.log(C_OPENCMS_DEBUG, this.getClassName() + "template file is: " + templateFile);
            A_OpenCms.log(C_OPENCMS_DEBUG, this.getClassName() + "selected template section is: " + ((templateSelector == null) ? "<default>" : templateSelector));
        }
        CmsXmlTemplateFile templateDocument = getOwnTemplateFile(cms, templateFile, elementName, parameters, templateSelector);
        //CmsRequestContext reqCont = cms.getRequestContext();
        I_CmsRegistry reg = cms.getRegistry();
        I_CmsSession session = cms.getRequestContext().getSession(true);
        String step = (String)parameters.get(C_STEP);
        SimpleDateFormat dateFormat = new java.text.SimpleDateFormat("dd.MM.yyyy");
        if((step == null) || "".equals(step)) {
            templateDocument.setData(C_PACKETNAME, "");
            templateDocument.setData(C_VERSION, "1");
            templateDocument.setData(C_MODULENAME, "");
            templateDocument.setData(C_DESCRIPTION, "");
            templateDocument.setData(C_VIEW, "");
            templateDocument.setData(C_ADMINPOINT, "");
            templateDocument.setData(C_MAINTENANCE, "");
            templateDocument.setData(C_AUTHOR, "");
            templateDocument.setData(C_EMAIL, "");
            templateDocument.setData(C_MODULE_TYPE, "checked");
            //  set the current date:
            templateDocument.setData(C_DATE, dateFormat.format(new Date()));
        }else {
            if("OK".equals(step) || "Ok".equals(step)) {
                String packagename = (String)parameters.get(C_PACKETNAME);
                String modulename = (String)parameters.get(C_MODULENAME);
                String version = (String)parameters.get(C_VERSION);
                String description = (String)parameters.get(C_DESCRIPTION);
                String view = (String)parameters.get(C_VIEW);
                String adminpoint = (String)parameters.get(C_ADMINPOINT);
                String maintenance = (String)parameters.get(C_MAINTENANCE);
                String author = (String)parameters.get(C_AUTHOR);
                String email = (String)parameters.get(C_EMAIL);
                String createDate = (String)parameters.get(C_DATE);
                String moduleType = (String)parameters.get(C_MODULE_TYPE);
                
                boolean moduleExists = reg.moduleExists(packagename);
                int v = -1;
                try {
                    v = Integer.parseInt(version);
                }catch(Exception e) {
                }
                if((!checkName(packagename)) || (version == null) || ("".equals(version)) || moduleExists || (v < 0)) {
                    Hashtable sessionData = new Hashtable();
                    sessionData.put(C_MODULENAME, getStringValue(modulename));
                    sessionData.put(C_VERSION, getStringValue(version));
                    sessionData.put(C_DESCRIPTION, getStringValue(description));
                    sessionData.put(C_VIEW, getStringValue(view));
                    sessionData.put(C_ADMINPOINT, getStringValue(adminpoint));
                    sessionData.put(C_MAINTENANCE, getStringValue(maintenance));
                    sessionData.put(C_AUTHOR, getStringValue(author));
                    sessionData.put(C_EMAIL, getStringValue(email));
                    sessionData.put(C_DATE, getStringValue(createDate));
                    sessionData.put(C_MODULE_TYPE, getStringValue(moduleType));
                    session.putValue(C_SESSION_DATA, sessionData);
                    if(moduleExists) {
                        templateSelector = "errorexists";
                    }else {
                        templateSelector = "errornoname";
                    }
                }else {
                    tryToCreateFolder(cms, "/system/", "modules");
                    // create the module (first test if we are in a project including /system/
                    try {
                        cms.createResource(C_VFS_PATH_MODULES, packagename, C_TYPE_FOLDER_NAME);
                    }catch(CmsException e) {
                        if(e.getType() != e.C_FILE_EXISTS) {
                            // couldn't create Module
                            templateDocument.setData("details", Utils.getStackTrace(e));
                            return startProcessing(cms, templateDocument, elementName, parameters, "errorProject");
                        }else {
                            try {
                                cms.readFolder(C_VFS_PATH_MODULES + packagename + "/");
                            }catch(CmsException ex) {
                                // folder exist but is deleted
                                templateDocument.setData("details", "Sorry, you have to publish this Project and create a new one.\n" + Utils.getStackTrace(e));
                                return startProcessing(cms, templateDocument, elementName, parameters, "errorProject");
                            }
                        }
                    }
                    long createDateLong = 0;
                    try {
                        createDateLong = dateFormat.parse(createDate).getTime();
                    }catch(Exception exc) {
                        createDateLong = (new Date()).getTime();
                    }
                    reg.createModule(packagename, getStringValue(modulename), getStringValue(description), getStringValue(author), createDateLong, v);
                    reg.setModuleAuthorEmail(packagename, getStringValue(email));
                    reg.setModuleMaintenanceEventClass(packagename, getStringValue(maintenance));
                    
                    boolean isSimpleModule = false;
                    if (moduleType!=null && moduleType.equals("checked")) {
                        reg.setModuleType( packagename, CmsRegistry.C_MODULE_TYPE_SIMPLE );
                        isSimpleModule = true;
                    } else {
                        reg.setModuleType( packagename, CmsRegistry.C_MODULE_TYPE_TRADITIONAL );
                    }

                    /*
                    // Moduldemo folder is deprecated since 5.0 beta 2
                    tryToCreateFolder(cms, "/", "moduledemos");
                    tryToCreateFolder(cms, "/moduledemos/", packetname);
                    */
                    
                    String modulePath = C_VFS_PATH_MODULES + packagename + "/";
                    
                    // as default dont export any module data                    
                    cms.writeProperty(modulePath, C_PROPERTY_EXPORT, "false");
                    
                    // create the class folder:
                    tryToCreateFolder(cms, modulePath, "classes");
                    // create all package folders beneth class folder
                    Vector cFolders = new Vector();
                    String workString = packagename;
                    while(workString.lastIndexOf('.') > -1) {
                        cFolders.addElement(workString.substring(workString.lastIndexOf('.') + 1));
                        workString = workString.substring(0, workString.lastIndexOf('.'));
                    }
                    tryToCreateFolder(cms, modulePath+"classes/", workString);
                    workString = modulePath + "classes/" + workString + "/";
                    for(int i = cFolders.size() - 1;i >= 0;i--) {
                        tryToCreateFolder(cms, workString, (String)cFolders.elementAt(i));
                        workString = workString + (String)cFolders.elementAt(i) + "/";
                    }                    
                    // create the lib folder, will get exportet to the "real" file system
                    tryToCreateFolder(cms, modulePath, "lib");
                    // create the templates folder
                    tryToCreateFolder(cms, modulePath, I_CmsWpConstants.C_VFS_DIR_TEMPLATES);
                    // create the "default_bodies" folder 
                    tryToCreateFolder(cms, modulePath, I_CmsWpConstants.C_VFS_DIR_DEFAULTBODIES);
                    // crate "elements" folder
                    tryToCreateFolder(cms, modulePath, "elements");

                    if (isSimpleModule) {
                        // simple module type 
                        reg.setModuleDocumentPath(packagename, modulePath + "index.html");                        
                    } else {
                        // traditional module type, create more directories
                        tryToCreateFolder(cms, modulePath, "contenttemplates");
                        tryToCreateFolder(cms, modulePath, "frametemplates");
                        tryToCreateFolder(cms, modulePath, "doc");
                        reg.setModuleDocumentPath(packagename, modulePath + "doc/index.html");
                    }
                    // initialize if we need a 'locales' subdirectory in our new module
                    boolean needsLocaleDir = !isSimpleModule;
                                        
                    if("checked".equals(view)) {
                        reg.setModuleView(packagename, packagename.replace('.', '_') + ".view", modulePath + "view/index.html");
                        tryToCreateFolder(cms, modulePath, "view");
                        needsLocaleDir = true;
                    }
                    if("checked".equals(adminpoint)) {
                        tryToCreateFolder(cms, modulePath, "administration");
                        // create "pics" folder (required for workplace extension images)
                        tryToCreateFolder(cms, modulePath, "pics");
                        needsLocaleDir = true;
                    }
                    if (needsLocaleDir) {
                        // create "locales" folder (required for workplace extension resource files)
                        tryToCreateFolder(cms, modulePath, I_CmsWpConstants.C_VFS_DIR_LOCALES);
                        tryToCreateFolder(cms, modulePath + I_CmsWpConstants.C_VFS_DIR_LOCALES, I_CmsWpConstants.C_DEFAULT_LANGUAGE);